package com.atguigu.yygh.order.controller;

import com.atguigu.yygh.common.result.R;
import com.atguigu.yygh.order.service.PaymentService;
import com.atguigu.yygh.order.service.WeixinService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * @description: 微信支付的接口
 * @author: 化一帆
 * @date: 2022/12/9 20:35
 * @version: v1.0
 */
@RestController
@RequestMapping("/api/order/weixin")
public class WeixinController {

    @Autowired
    private WeixinService weixinService;

    @Autowired
    private PaymentService paymentService;

    /**
     * @description:  调用微信提供的接口  生成微信支付的二维码
     * 点击支付，根据前端传过来的订单id进行操作【平台端的id】
     * @author 化一帆
     * @date 2022/12/9 20:38
     */
    @GetMapping("/createNative/{orderId}")
    public R createNative(@PathVariable("orderId") Long orderId) {

        //微信会返回很多数据，其中有一个url，所以用map进行结果封装
        Map map = weixinService.createNative(orderId);
        return R.ok().data(map);
    }

    /**
     * @description: 查询订单的支付状态（平台端的id）
     * @author 化一帆
     * @date 2022/12/11 13:28
     */
    @GetMapping("/queryPayStatus/{orderId}")
    public R queryPayStatus(@PathVariable("orderId") Long orderId){
        Map<String,String> map=weixinService.queryPayStatus(orderId);//调用微信的接口，微信端返回的map数据
        //支付出錯
        if(map==null){
            return R.error().message("支付出错（接口调用失败）");
        }

        //支付成功，微信端返回了map
        String trade_state = map.get("trade_state");
        if("SUCCESS".equalsIgnoreCase(trade_state)){
            paymentService.afterSuccess(orderId,map);
            //支付成功
            return R.ok().message("支付成功");
        }

        return R.ok().message("支付中");
    }

}
